/**
 * unit，该工具封装了长整形 IP 地址与字符串相互转换的方法
 * 创建者：Bryce
 * 创建时间：20210901
 */
package unit

import (
	"fmt"
	"math/big"
	"net"
)

/**
 * LongToIp，长整型 IP 转为字符串
 * Params：
 *   ip：最小值
 * Return：
 *   IP 字符串
 */
func LongToIp(ip int64) string {
	return fmt.Sprintf("%d.%d.%d.%d",
		byte(ip>>24), byte(ip>>16), byte(ip>>8), byte(ip))
}

/**
 * IpToLong，字符串 IP 转为长整形
 * Params：
 *   ip：字符串格式 IP
 * Return：
 *   长整形 IP
 */
func IpToLong(ip string) int64 {
	ret := big.NewInt(0)
	ret.SetBytes(net.ParseIP(ip).To4())
	return ret.Int64()
}
